// 方法装饰器
/**
 *
 * @param targetClassPrototype 原型
 * @param methodname 方法名
 * @param methodDecri 方法数据属性
 */
function MyMethodDecorator(param: any) {
  console.log("🚀 ~ MyMethodDecorator ~ param:", param);
  return function MyMethodDecorator<T>(
    targetClassPrototype: any,
    methodname: string,
    // methodDecri: TypedPropertyDescriptor<T>
    methodDecri: TypedPropertyDescriptor<T>
  ) {
    console.log("targetClassPrototype", targetClassPrototype);
    console.log("methodname", methodname);
    console.log("methodDecri", methodDecri);
    (methodDecri as any).value();
  };
}

class RoleService {
  public roleName: string = "管理员";
  constructor() {}

  @MyMethodDecorator("abd")
  DistribRoles() {
    console.log("分配角色...");
  }
}

export {};
